home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / +system+ / tools / sound / ahi / developer / devloper.lzx / include / Asm / devices / ahi.i
Text File  |  1980-04-24  |  14KB  |  462 lines

  1.     IFND DEVICES_AHI_I
  2. DEVICES_AHI_I        SET    1
  3.  
  4. **
  5. **    $VER: ahi.i 4.2 (27.4.97)
  6. **
  7. **    ahi.device definitions
  8. **
  9. **    (C) Copyright 1994-1997 Martin Blom
  10. **    All Rights Reserved.
  11. **
  12. ** (TAB SIZE: 8)
  13. **
  14.  
  15. *------------------------------------------------------------------------*
  16.  
  17.  
  18.     IFND EXEC_TYPES_I
  19.     INCLUDE 'exec/types.i'
  20.     ENDC
  21.  
  22.     IFND EXEC_IO_I
  23.     INCLUDE 'exec/io.i'
  24.     ENDC
  25.  
  26.     IFND UTILITY_TAGITEM_I
  27.     INCLUDE 'utility/tagitem.i'
  28.     ENDC
  29.  
  30. *------------------------------------------------------------------------*
  31.  
  32.  
  33. *** MACROS
  34.  
  35. Fixed    MACRO                    ; A fixed-point value, 16 bits
  36. \1        EQU     SOFFSET            ; to the left of the point and
  37. SOFFSET     SET     SOFFSET+4            ; 16 bits to the right
  38.         ENDM
  39.  
  40. AHINAME    MACRO
  41.     dc.b    "ahi.device",0
  42.     ENDM
  43.  
  44.  ; A handy macro to open the device for use as a library.
  45.  ; Usage:  OPENAHI <version>
  46.  ; On exit: d0=_AHIBase or NULL for error.
  47.  
  48. OPENAHI    MACRO
  49.     movem.l    d1/a0-a1/a6,-(sp)
  50.     lea    AHI_PORT(pc),a0
  51.     clr.l    (a0)+
  52.     clr.l    (a0)+
  53.     moveq    #0,d0
  54.     move.l    d0,(a0)+
  55.  
  56.     move.l    4.w,a6
  57.     jsr    _LVOCreateMsgPort(a6)
  58.     lea    AHI_PORT(pc),a0
  59.     move.l    d0,(a0)
  60.     beq.b    AHI_ERROR
  61.     move.l    d0,a0
  62.     moveq    #AHIRequest_SIZEOF,d0
  63.     jsr    _LVOCreateIORequest(a6)
  64.     lea    AHI_IOR(pc),a0
  65.     move.l    d0,(a0)
  66.     beq.b    AHI_ERROR
  67.     lea    AHI_NAME(pc),a0
  68.     move.l    d0,a1
  69.     move.w    #\1,ahir_Version(a1)
  70.     move.l    #AHI_NO_UNIT,d0
  71.     moveq    #0,d1
  72.     jsr    _LVOOpenDevice(a6)
  73.     lea    AHI_DEVICE(pc),a0
  74.     move.l    d0,(a0)
  75.     bne.b    AHI_ERROR
  76.  
  77.     move.l    AHI_IOR(PC),a0
  78.     move.l    IO_DEVICE(a0),d0
  79.     bra.b    AHI_EXIT
  80.  
  81. AHI_PORT:    dc.l    0
  82. AHI_IOR:    dc.l    0
  83. AHI_DEVICE:    dc.l    0
  84. AHI_NAME:    AHINAME
  85.     even
  86. AHI_ERROR:
  87.     moveq    #0,D0
  88. AHI_EXIT:
  89.     movem.l    (sp)+,d1/a0-a1/a6
  90.     ENDM
  91.  
  92.  ; Here is the macro for closing the device after it has been
  93.  ; opened with the OPENAHI macro. Call CLOSEAHI even if OPENAHI
  94.  ; failed!
  95.  
  96. CLOSEAHI MACRO
  97.     movem.l    d0-d1/a0-a1/a6,-(sp)
  98.     move.l    4.w,a6
  99.     lea    AHI_DEVICE(pc),a1
  100.     tst.l    (a1)
  101.     bne.b    .ahi_nodevice
  102.     subq.l    #1,(a1)
  103.     move.l    AHI_IOR(pc),a1
  104.     jsr    _LVOCloseDevice(a6)
  105.     lea    AHI_IOR(pc),a1
  106.     move.l    (a1),a0
  107.     clr.l    (a1)
  108.     jsr    _LVODeleteIORequest(a6)
  109. .ahi_nodevice
  110.     lea    AHI_PORT(pc),a1
  111.     move.l    (a1),a0
  112.     clr.l    (a1)
  113.     jsr    _LVODeleteMsgPort(a6)
  114.     movem.l    (sp)+,d0-d1/a0-a1/a6
  115.     ENDM
  116.  
  117. *** STRUCTURES
  118.  
  119.  ; AHIAudioCtrl
  120.     STRUCTURE AHIAudioCtrl,0
  121.     APTR    ahiac_UserData
  122.     ; Lots of private data follows!
  123.     LABEL    AHIAudioCtrl_SIZEOF        ; Do not use!
  124.  
  125.  ; AHISoundMessage
  126.      STRUCTURE AHISoundMessage,0
  127.      UWORD    ahism_Channel
  128.      LABEL    AHISoundMessage_SIZEOF
  129.  
  130.  ; AHIRecordMessage
  131.     STRUCTURE AHIRecordMessage,0
  132.     ULONG    ahirm_Type            ; Format of buffer (object)
  133.     APTR    ahirm_Buffer            ; Pointer to the sample array
  134.     ULONG    ahirm_Length            ; Number of sample frames in buffer
  135.     LABEL    AHIRecordMessage_SIZEOF
  136.  
  137.  ; AHISampleInfo
  138.     STRUCTURE AHISampleInfo,0
  139.     ULONG    ahisi_Type            ; Format of samples
  140.     APTR    ahisi_Address            ; Address to array of samples
  141.     ULONG    ahisi_Length            ; Number of samples in array
  142.     LABEL    AHISampleInfo_SIZEOF
  143.  
  144.  ; AHIAudioModeRequester
  145.     STRUCTURE AHIAudioModeRequester,0
  146.     ULONG    ahiam_AudioID;            ; Selected audio mode
  147.     ULONG    ahiam_MixFreq;            ; Selected mixing/sampling frequency
  148.     
  149.     WORD    ahiam_LeftEdge;            ; Coordinates of requester on exit
  150.     WORD    ahiam_TopEdge;
  151.     WORD    ahiam_Width;
  152.     WORD    ahiam_Height;
  153.  
  154.     BOOL    ahiam_InfoOpened;        ; Info window opened on exit
  155.     WORD    ahiam_InfoLeftEdge;        ; Last coordinates of Info window
  156.     WORD    ahiam_InfoTopEdge;
  157.     WORD    ahiam_InfoWidth;
  158.     WORD    ahiam_InfoHeight;
  159.  
  160.     APTR    ahiam_UserData;            ; You can store your own data here
  161.     ; Lots of private data follows!
  162.     LABEL    AHIAudioModeRequester_SIZEOF
  163.  
  164. ahie_Effect    EQU    0
  165.  
  166.  ; AHIEffMasterVolume
  167.     STRUCTURE AHIEffMasterVolume,0
  168.     ULONG    ahiemv_Effect            ; Set to AHIET_MASTERVOLUME
  169.     Fixed    ahiemv_Volume            ; See autodocs for range!
  170.     LABEL    AHIEffMasterVolume_SIZEOF
  171.  
  172.  ; AHIEffOutputBuffer
  173.     STRUCTURE AHIEffOutputBuffer,0
  174.     ULONG    ahieob_Effect            ; Set to AHIET_OUTPUTBUFFER
  175.     APTR    ahieob_Func
  176.  ; These fields are filled by AHI
  177.     ULONG    ahieob_Type            ; Format of buffer
  178.     APTR    ahieob_Buffer            ; Pointer to the sample array
  179.     ULONG    ahieob_Length            ; Number of sample frames in buffer
  180.     LABEL    AHIEffOutputBuffer_SIZEOF
  181.  
  182.  ; AHIEffDSPMask (V4)
  183.     STRUCTURE AHIEffDSPMask,0
  184.     ULONG    ahiedm_Effect            ; Set to AHIET_DSPMASK
  185.     UWORD    ahiedm_Channels            ; Number of elements in array
  186.     LABEL    ahiedm_Mask            ; Here follows the UBYTE array
  187.     LABEL    AHIEffDSPMask_SIZEOF
  188.  
  189. AHIEDM_WET    EQU    0
  190. AHIEDM_DRY    EQU    1
  191.  
  192.  ; AHIEffDSPEcho (V4)
  193.     STRUCTURE AHIEffDSPEcho,0
  194.     ULONG    ahiede_Effect            ; Set to AHIET_DSPECHO
  195.     ULONG    ahiede_Delay            ; In samples
  196.     Fixed    ahiede_Feedback
  197.     Fixed    ahiede_Mix
  198.     Fixed    ahiede_Cross
  199.     LABEL    AHIEffDSPEcho_SIZEOF
  200.  
  201.  ; AHIEffChannelInfo (V4)
  202.     STRUCTURE AHIEffChannelInfo,0
  203.     ULONG    ahieci_Effect            ; Set to AHIET_CHANNELINFO
  204.     APTR    ahieci_Func
  205.     UWORD    ahieci_Channels
  206.     UWORD    ahieci_Pad
  207.  ; The rest is filled by AHI
  208.     LABEL    ahieci_Offset            ; The ULONG array follows
  209.      LABEL    AHIEffChannelInfo_SIZEOF
  210.  
  211. *** TAGS
  212.  
  213. AHI_TagBase        EQU TAG_USER
  214. AHI_TagBaseR        EQU AHI_TagBase|$8000
  215.  
  216.  ; AHI_AllocAudioA tags
  217. AHIA_AudioID        EQU AHI_TagBase+1    ; Desired audio mode
  218. AHIA_MixFreq        EQU AHI_TagBase+2    ; Suggested mixing frequency
  219. AHIA_Channels        EQU AHI_TagBase+3    ; Suggested number of channels
  220. AHIA_Sounds        EQU AHI_TagBase+4    ; Number of sounds to use
  221. AHIA_SoundFunc        EQU AHI_TagBase+5    ; End-of-Sound Hook
  222. AHIA_PlayerFunc        EQU AHI_TagBase+6    ; Player Hook
  223. AHIA_PlayerFreq        EQU AHI_TagBase+7    ; Frequency for player Hook (Fixed)
  224. AHIA_MinPlayerFreq    EQU AHI_TagBase+8    ; Minimum Frequency for player Hook
  225. AHIA_MaxPlayerFreq    EQU AHI_TagBase+9    ; Maximum Frequency for player Hook
  226. AHIA_RecordFunc        EQU AHI_TagBase+10    ; Sample recording Hook
  227. AHIA_UserData        EQU AHI_TagBase+11    ; What to put in ahiac_UserData
  228.  
  229.   ; AHI_PlayA tags (V4)
  230. AHIP_BeginChannel     EQU AHI_TagBase+40    ; All command tags should be...
  231. AHIP_EndChannel        EQU AHI_TagBase+41    ; ... enclosed by these tags.
  232. AHIP_Freq        EQU AHI_TagBase+50
  233. AHIP_Vol        EQU AHI_TagBase+51
  234. AHIP_Pan        EQU AHI_TagBase+52
  235. AHIP_Sound        EQU AHI_TagBase+53
  236. AHIP_Offset        EQU AHI_TagBase+54
  237. AHIP_Length        EQU AHI_TagBase+55
  238. AHIP_LoopFreq        EQU AHI_TagBase+60
  239. AHIP_LoopVol        EQU AHI_TagBase+61
  240. AHIP_LoopPan        EQU AHI_TagBase+62
  241. AHIP_LoopSound        EQU AHI_TagBase+63
  242. AHIP_LoopOffset        EQU AHI_TagBase+64
  243. AHIP_LoopLength        EQU AHI_TagBase+65
  244.  
  245.  ; AHI_ControlAudioA tags
  246. AHIC_Play        EQU AHI_TagBase+80    ; Boolean
  247. AHIC_Record        EQU AHI_TagBase+81    ; Boolean
  248. AHIC_MonitorVolume    EQU AHI_TagBase+82
  249. AHIC_MonitorVolume_Query EQU AHI_TagBase+83    ; ti_Data is pointer to Fixed (LONG)
  250. AHIC_MixFreq_Query    EQU AHI_TagBase+84    ; ti_Data is pointer to ULONG
  251. * --- New for V2, they will be ignored by V1 ---
  252. AHIC_InputGain        EQU AHI_TagBase+85
  253. AHIC_InputGain_Query    EQU AHI_TagBase+86    ; ti_Data is pointer to Fixed (LONG)
  254. AHIC_OutputVolume    EQU AHI_TagBase+87
  255. AHIC_OutputVolume_Query    EQU AHI_TagBase+88    ; ti_Data is pointer to Fixed (LONG)
  256. AHIC_Input        EQU AHI_TagBase+89
  257. AHIC_Input_Query    EQU AHI_TagBase+90    ; ti_Data is pointer to ULONG
  258. AHIC_Output        EQU AHI_TagBase+91
  259. AHIC_Output_Query    EQU AHI_TagBase+92    ; ti_Data is pointer to ULONG
  260.  
  261.  ; AHI_GetAudioAttrsA tags
  262. AHIDB_AudioID        EQU AHI_TagBase+100
  263. AHIDB_Driver        EQU AHI_TagBaseR+101    ; Pointer to name of driver
  264. AHIDB_Flags        EQU AHI_TagBase+102    ; Private!
  265. AHIDB_Volume        EQU AHI_TagBase+103    ; Boolean
  266. AHIDB_Panning        EQU AHI_TagBase+104    ; Boolean
  267. AHIDB_Stereo        EQU AHI_TagBase+105    ; Boolean
  268. AHIDB_HiFi        EQU AHI_TagBase+106    ; Boolean
  269. AHIDB_PingPong        EQU AHI_TagBase+107    ; Boolean
  270. AHIDB_MultTable        EQU AHI_TagBase+108    ; Private!
  271. AHIDB_Name        EQU AHI_TagBaseR+109    ; Pointer to name of this mode
  272. AHIDB_Bits        EQU AHI_TagBase+110    ; Output bits
  273. AHIDB_MaxChannels    EQU AHI_TagBase+111    ; Max supported channels
  274. AHIDB_MinMixFreq    EQU AHI_TagBase+112    ; Min mixing freq. supported
  275. AHIDB_MaxMixFreq    EQU AHI_TagBase+113    ; Max mixing freq. supported
  276. AHIDB_Record        EQU AHI_TagBase+114    ; Boolean
  277. AHIDB_Frequencies    EQU AHI_TagBase+115
  278. AHIDB_FrequencyArg    EQU AHI_TagBase+116    ; ti_Data is index number!
  279. AHIDB_Frequency        EQU AHI_TagBase+117
  280. AHIDB_Author        EQU AHI_TagBase+118    ; Pointer to driver author name
  281. AHIDB_Copyright        EQU AHI_TagBase+119    ; Pointer to driver copyright notice
  282. AHIDB_Version        EQU AHI_TagBase+120    ; Pointer to driver version string
  283. AHIDB_Annotation    EQU AHI_TagBase+121    ; Pointer to driver annotation text
  284. AHIDB_IndexArg        EQU AHI_TagBase+123    ; ti_Data is frequency!
  285. AHIDB_BufferLen        EQU AHI_TagBase+122    ; Specifies the string buffer size
  286. AHIDB_Index        EQU AHI_TagBase+124
  287. AHIDB_Realtime        EQU AHI_TagBase+125    ; Boolean
  288. AHIDB_MaxPlaySamples    EQU AHI_TagBase+126    ; It's sample *frames*
  289. AHIDB_MaxRecordSamples    EQU AHI_TagBase+127    ; It's sample *frames*
  290. AHIDB_MixFreq           EQU AHI_TagBase+128
  291. AHIDB_FullDuplex    EQU AHI_TagBase+129    ; Boolean
  292. * --- New for V2, they will be ignored by V1 ---
  293. AHIDB_MinMonitorVolume    EQU AHI_TagBase+130
  294. AHIDB_MaxMonitorVolume    EQU AHI_TagBase+131
  295. AHIDB_MinInputGain    EQU AHI_TagBase+132
  296. AHIDB_MaxInputGain    EQU AHI_TagBase+133
  297. AHIDB_MinOutputVolume    EQU AHI_TagBase+134
  298. AHIDB_MaxOutputVolume    EQU AHI_TagBase+135
  299. AHIDB_Inputs        EQU AHI_TagBase+136
  300. AHIDB_InputArg        EQU AHI_TagBase+137    * ti_Data is input index
  301. AHIDB_Input        EQU AHI_TagBase+138
  302. AHIDB_Outputs        EQU AHI_TagBase+139
  303. AHIDB_OutputArg        EQU AHI_TagBase+140    * ti_Data is input index
  304. AHIDB_Output        EQU AHI_TagBase+141
  305. * --- New for V4, they will be ignored by V2 and earlier ---
  306. AHIDB_Data        EQU AHI_TagBaseR+142    ; Private!
  307.  
  308.  ; AHI_BestAudioIDA tags
  309. * --- New for V4, they will be ignored by V2 and earlier ---
  310. AHIB_Dizzy        EQU (AHI_TagBase+190)
  311.  
  312.  ; AHI_AudioRequestA tags
  313.    ; Window control
  314. AHIR_Window        EQU AHI_TagBase+200    ; Parent window
  315. AHIR_Screen        EQU AHI_TagBase+201    ; Screen to open on if no window
  316. AHIR_PubScreenName    EQU AHI_TagBase+202    ; Name of public screen
  317. AHIR_PrivateIDCMP    EQU AHI_TagBase+203    ; Allocate private IDCMP?
  318. AHIR_IntuiMsgFunc    EQU AHI_TagBase+204    ; Function to handle IntuiMessages
  319. AHIR_SleepWindow    EQU AHI_TagBase+205    ; Block input in AHIR_Window?
  320. AHIR_UserData        EQU AHI_TagBase+206    ; What to put in ahiam_UserData
  321.    ; Text display
  322. AHIR_TextAttr        EQU AHI_TagBase+220    ; Text font to use for gadget text
  323. AHIR_Locale        EQU AHI_TagBase+221    ; Locale to use for text
  324. AHIR_TitleText        EQU AHI_TagBase+222    ; Title of requester
  325. AHIR_PositiveText    EQU AHI_TagBase+223    ; Positive gadget text
  326. AHIR_NegativeText    EQU AHI_TagBase+224    ; Negative gadget text
  327.    ; Initial settings
  328. AHIR_InitialLeftEdge    EQU AHI_TagBase+240    ; Initial requester coordinates
  329. AHIR_InitialTopEdge    EQU AHI_TagBase+241
  330. AHIR_InitialWidth     EQU AHI_TagBase+242    ; Initial requester dimensions
  331. AHIR_InitialHeight    EQU AHI_TagBase+243
  332. AHIR_InitialAudioID    EQU AHI_TagBase+244    ; Initial audio mode id
  333. AHIR_InitialMixFreq    EQU AHI_TagBase+245    ; Initial mixing/sampling frequency
  334. AHIR_InitialInfoOpened    EQU AHI_TagBase+246    ; Info window initially opened?
  335. AHIR_InitialInfoLeftEdge EQU AHI_TagBase+247    ; Initial Info window coords.
  336. AHIR_InitialInfoTopEdge    EQU AHI_TagBase+248
  337. AHIR_InitialInfoWidth    EQU AHI_TagBase+249    ; Not used!
  338. AHIR_InitialInfoHeight    EQU AHI_TagBase+250    ; Not used!
  339.    ; Options
  340. AHIR_DoMixFreq        EQU AHI_TagBase+260    ; Allow selection of mixing frequency?
  341. AHIR_DoDefaultMode    EQU AHI_TagBase+261    ; Allow selection of default mode? (V4)
  342.    ; Filtering
  343. AHIR_FilterTags        EQU AHI_TagBase+270    ; Pointer to filter taglist
  344. AHIR_FilterFunc        EQU AHI_TagBase+271    ; Function to filter mode id's
  345.  
  346.  
  347. *** DEFS
  348.  
  349. AHI_INVALID_ID        EQU ~0            ; Invalid Audio ID
  350. AHI_DEFAULT_ID        EQU $00000000        ; Only for AHI_AllocAudioA()!
  351. AHI_LOOPBACK_ID        EQU $00000001        ; Special sample render ID
  352. AHI_DEFAULT_FREQ    EQU 0            ; Only for AHI_AllocAudioA()!
  353. AHI_MIXFREQ        EQU ~0            ; Special frequency for AHI_SetFreq()
  354. AHI_NOSOUND        EQU ~0            ; Turns a channel off
  355.  
  356.  ; Set#? Flags
  357.     BITDEF    AHIS,IMM,0
  358.  
  359.  ; Effect types
  360. AHIET_CANCEL        EQU 1<<31        ; OR with effect to disable
  361. AHIET_MASTERVOLUME    EQU 1
  362. AHIET_OUTPUTBUFFER    EQU 2
  363. * --- New for V4 ---
  364. AHIET_DSPMASK        EQU 3
  365. AHIET_DSPECHO        EQU 4
  366. AHIET_CHANNELINFO    EQU 5
  367.  
  368.  ; Sound types
  369. AHIST_NOTYPE        EQU ~0            ; Private
  370. AHIST_SAMPLE        EQU 0            ; 8 or 16 bit sample
  371. AHIST_DYNAMICSAMPLE    EQU 1            ; Dynamic sample
  372. AHIST_INPUT        EQU 1<<29        ; The input from your sampler
  373. AHIST_BW        EQU 1<<30        ; Private
  374.  
  375.  ; Sample types
  376. ; Note that only AHIST_M8S, AHIST_S8S, AHIST_M16S and AHIST_S16S
  377. ; are supported by AHI_LoadSound().
  378. AHIST_M8S        EQU 0            ; Mono, 8 bit signed (BYTE)
  379. AHIST_M16S        EQU 1            ; Mono, 16 bit signed (WORD)
  380. AHIST_S8S        EQU 2            ; Stereo, 8 bit signed (2×BYTE)
  381. AHIST_S16S        EQU 3            ; Stereo, 16 bit signed (2×WORD)
  382. AHIST_M32S        EQU 8            ; Mono, 32 bit signed (LONG)
  383. AHIST_S32S        EQU 10            ; Stereo, 32 bit signed (2×LONG)
  384.  
  385. AHIST_M8U        EQU 4            ; OBSOLETE!
  386.  
  387.  ; Error codes
  388. AHIE_OK            EQU 0            ; No error
  389. AHIE_NOMEM        EQU 1            ; Out of memory
  390. AHIE_BADSOUNDTYPE    EQU 2            ; Unknown sound type
  391. AHIE_BADSAMPLETYPE    EQU 3            ; Unknown/unsupported sample type
  392. AHIE_ABORTED        EQU 4            ; User-triggered abortion
  393. AHIE_UNKNOWN        EQU 5            ; Error, but unknown
  394. AHIE_HALFDUPLEX        EQU 6            ; CMD_WRITE/CMD_READ failure
  395.  
  396.  
  397.  
  398. *- DEVICE INTERFACE DEFINITIONS FOLLOWS ------------------------------------*
  399.  
  400.  ; Device units
  401.  
  402. AHI_DEFAULT_UNIT    EQU 0
  403. AHI_NO_UNIT        EQU 255
  404.  
  405.  
  406.  ; The preference file
  407.  
  408. ID_AHIU         EQU "AHIU"
  409. ID_AHIG         EQU "AHIG"
  410.  
  411.     STRUCTURE AHIUnitPrefs,0
  412.     UBYTE    ahiup_Unit
  413.         UBYTE    ahiup_Pad
  414.         UWORD    ahiup_Channels
  415.         ULONG    ahiup_AudioMode
  416.         ULONG    ahiup_Frequency
  417.         Fixed    ahiup_MonitorVolume
  418.         Fixed    ahiup_InputGain
  419.         Fixed    ahiup_OutputVolume
  420.         ULONG    ahiup_Input
  421.         ULONG    ahiup_Output
  422.     LABEL    AHIUnitPrefs_SIZEOF
  423.  
  424.     STRUCTURE AHIGlobalPrefs,0
  425.     UWORD    ahigp_DebugLevel            ; Range: 0-3 (for None, Low,
  426.                             ; High and All
  427.     BOOL    ahigp_DisableSurround
  428.     BOOL    ahigp_DisableEcho
  429.     BOOL    ahigp_FastEcho
  430.     Fixed    ahigp_MaxCPU
  431.     BOOL    ahigp_ClipMasterVolume
  432.     LABEL    AHIGlobalPrefs_SIZEOF
  433.  
  434.  ; Debug levels
  435.  
  436. AHI_DEBUG_NONE        EQU (0)
  437. AHI_DEBUG_LOW        EQU (1)
  438. AHI_DEBUG_HIGH        EQU (2)
  439. AHI_DEBUG_ALL        EQU (3)
  440.  
  441.  ; AHIRequest
  442.  
  443.     STRUCTURE AHIRequest,0
  444.     STRUCT    ahir_Std,IOSTD_SIZE        ; Standard IO request
  445.     UWORD    ahir_Version            ; Needed version
  446. * --- New for V4, they will be ignored by V2 and earlier ---
  447.     UWORD    ahir_Pad1
  448.     ULONG    ahir_Private1            ; Hands off!
  449.     ULONG    ahir_Private2            ; Hands off!
  450.     ULONG    ahir_Type            ; Sample format
  451.     ULONG    ahir_Frequency            ; Sample/Record frequency
  452.     Fixed    ahir_Volume            ; Sample volume
  453.     Fixed    ahir_Position            ; Stereo position
  454.     APTR    ahir_Link            ; For double buffering
  455.     LABEL    AHIRequest_SIZEOF
  456.  
  457.  ; Flags for OpenDevice()
  458.  
  459.     BITDEF    AHID,NOMODESCAN,0
  460.  
  461.     ENDC ; DEVICES_AHI_I
  462.